package kha.wpf;

import system.io.Path;
import system.Uri;
import system.UriKind;
import system.windows.media.MediaPlayer;

class Video extends kha.Video {
	var player: MediaPlayer;

	public function new(filename: String): Void {
		super();
		player = new MediaPlayer();
		player.Open(new Uri(Path.GetFullPath(filename), UriKind.Absolute));
	}

	public function getPlayer(): MediaPlayer {
		return player;
	}

	public override function play(loop: Bool = false): Void {
		player.Play();
	}

	public override function pause(): Void {
		player.Pause();
	}

	public override function stop(): Void {
		player.Stop();
	}

	@:functionCode('
		if (player.NaturalDuration.HasTimeSpan)
		return Math.round(player.NaturalDuration.TimeSpan.TotalMilliseconds);
		else return int.MaxValue;
	')
	public override function getLength(): Int {
		return 0;
	}

	@:functionCode('
		return Math.round(player.Position.TotalMilliseconds);
	')
	public override function getCurrentPos(): Int {
		return 0;
	}

	public override function getVolume(): Float {
		return player.Volume;
	}

	public override function setVolume(volume: Float): Void {
		player.Volume = volume;
	}

	public override function unload(): Void {
		player = null;
	}
}
